package ejb.casacentral.service.controller;

import java.util.List;
import java.util.Set;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;

import ejb.casacentral.log.CasaLogger;
import ejb.casacentral.persistence.entity.Proveedor;

@SuppressWarnings("unchecked")
@Stateless
public class ProveedorControllerBean implements ProveedorController {
    
    @PersistenceContext(unitName = "casacentral")
    private EntityManager em;
    
    @Override
    public List<Proveedor> obtenerProveedores() {
    	CasaLogger.log(" obteniendo entidad .... ");
      return  em.createNamedQuery("Proveedor.todas").getResultList();
        
    }

    @Override
    public List<Proveedor> obtenerProveedoresPorCodigo(Set<String> codigosProveedores) {
    	CasaLogger.log(" obteniendo entidad .... ");
        return   em.createNamedQuery("Proveedor.porCodigos").setParameter("codigos", codigosProveedores).getResultList();
    }
    @Override
    public Proveedor obtenerProveedorPorCodigo(String codigo) {
        Proveedor proveedor = null;
        try{
        	CasaLogger.log(" obteniendo entidad .... ");
            proveedor = (Proveedor)  em.createNamedQuery("Proveedor.porCodigo").setParameter("codigo", codigo).getSingleResult();
        }catch (NoResultException e) {
            CasaLogger.log("no se encontro el proveedor.... ");
        }
        return proveedor;
    }

    @Override
    public Proveedor nuevoProveedor(String cuil) {
        
        Proveedor proveedor = new Proveedor();
        proveedor.setCuil(cuil);
        CasaLogger.log(" persistiendo entidad .... "); em.merge(proveedor);
        em.flush();
        return proveedor;
    }

}